package com.lvmama.rhino.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.lvmama.rhino.entity.MonitorVO;
import com.lvmama.rhino.pojo.OptionData;
import com.lvmama.rhino.pojo.monitor.MonitorApi;

public interface MonitorApiService {

    /**
     * 接口占比趋势
     * @param monitorVO
     * @return
     */
    List<OptionData> queryOptionDataList(MonitorVO monitorVO);

    /**
     * 分页查询接口信息
     * @param monitorVO
     * @return
     */
    PageInfo<MonitorApi> queryMonitorApiPage(MonitorVO monitorVO);

    /**
     * 查询接口版本号
     * @param monitorVO
     * @return
     */
    String[] queryMonitorApiVersion(MonitorVO monitorVO);

    /**
     * 单个接口不同版本接口耗时
     * @param monitorVO
     * @return
     */
    List<MonitorApi> queryMonitorApiVersionList(MonitorVO monitorVO);

    /**
     * 单个接口运营商调用耗时
     * @param monitorVO
     * @return
     */
    List<MonitorApi> queryMonitorApiOperatorsList(MonitorVO monitorVO);
    
    /**
     * 查询前15天中各类别下的接口调用耗时--运营商
     * @param i
     * @param j
     * @return
     */
    List<MonitorApi> selectDateByOperators(int i, int j);

    /**
     * 查询前15天中各类别下的接口调用耗时--网络类型
     * @param i
     * @param j
     * @return
     */
    List<MonitorApi> selectDateByNetworkType(int i, int j);

    /**
     * 根据接口名分页查询接口搜索
     * @param monitorVO
     * @return
     */
    PageInfo<MonitorApi> queryMonitorApiSearchPage(MonitorVO monitorVO);

    /**
     * 业务性能优化
     * @param monitorVO
     * @return
     */
    List<MonitorApi> querymonitorApiAvgTime(MonitorVO monitorVO);

    /**
     * 接口信息
     * @param monitorVO
     * @return
     */
    PageInfo<MonitorApi> queryMonitorApiDetailedList(MonitorVO monitorVO);

    /**
     * 不同网络制式的接口信息
     * @param monitorVO
     * @return
     */
    List<MonitorApi> queryMonitorApiNetworkTypeList(MonitorVO monitorVO);

    /**
     * 接口总耗时占比(首包时间+传输时间)
     * @param monitorVO
     * @return
     */
    List<OptionData> queryTimeConsumingOptionDataList(MonitorVO monitorVO);

    /**
     * 接口总调用量
     * @param monitorVO
     * @return
     */
    List<MonitorApi> queryAmountSum(MonitorVO monitorVO);

    /**
     * 分页查询总耗时的接口信息
     * @param monitorVO
     * @return
     */
    PageInfo<MonitorApi> queryMonitorApiTotalPage(MonitorVO monitorVO);

}
